#pragma once

#include <unistd.h>
#include <sys/syscall.h>

namespace CurrentThread
{
    extern __thread int t_cachedTid;
    /*是一个声明，它表示在多线程程序中，每个线程都有一个名为 t_cachedTid 的局部变量，
    该变量的类型为 int。__thread 关键字用于指定这个变量是线程局部存储（Thread-Local Storage，TLS)
    的，这意味着每个线程都有自己独立的 t_cachedTid 副本，而不是共享同一个变量。*/

    void cacheTid();

    inline int tid()
    {
        if (__builtin_expect(t_cachedTid == 0, 0))//程序员认为 t_cachedTid 的值很可能不为 0，
        //因此编译器可以针对这个预期进行优化。
        {
            cacheTid();
        }
        return t_cachedTid;
    }
}